#ifndef GAMEENGINE_H
#define GAMEENGINE_H

#include <GL/glew.h>
#include "camera.h"
#include "engine.h"
#include "manager/globalmanager.h"
#include "level.h"

class CGameEngine: public CEngine
{
public:
    const CCamera& getCamera() { return m_camera; };
	void Init();
	void Think();
	void Render();
    static void LightAndMAterial();
	static void DrawBackground(CTextureManager *texture_manager_ptr, std::string tex_name);
	void ShowFPS();
    void HandleKeyRealTimeInput();
	void KeyDown	    (const sf::Key::Code& iKeyCode);
	void KeyUp  	    (const int& iKeyEnum);
	void MouseMoved     (const int& iX,const int& iY);
	void MouseButtonUp  (const int& iButton);
	void MouseButtonDown(const int& iButton);
	void MouseWheelScrolled(const int& iWheelDelta);
	void WindowInactive();
	void WindowActive();
//	void End();

private:
    CGlobalManager m_GlobalManager;
    CCamera m_camera;
    int mouse_x;
    int mouse_y;
    sf::Key::Code m_last_key_down;
    CLevel* niveau;
    const sf::Input *m_input;
};

#endif //GAMEENGINE_H
